<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/linux/linux-3.13/include/linux/oom.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/linux/linux-3.13/include/linux/oom.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="True">       1:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_noref.html#_X19JTkNMVURFX0xJTlVYX09PTV9IXzA_"><span class="b">__INCLUDE_LINUX_OOM_H</span></a>
<a name="2" /><span class="True">       2:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19JTkNMVURFX0xJTlVYX09PTV9IXzA_"><span class="b">__INCLUDE_LINUX_OOM_H</span></a>
<a name="3" /><span class="True">       3:</span> 
<a name="4" /><span class="True">       4:</span> 
<a name="5" /><span class="True">       5:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">sched</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="6" /><span class="True">       6:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">types</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="7" /><span class="True">       7:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">nodemask</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="8" /><span class="True">       8:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">uapi</span><span class="f">/</span><span class="b">linux</span><span class="f">/</span><span class="b">oom</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="9" /><span class="True">       9:</span> 
<a name="10" /><span class="True">      10:</span> <span class="m">struct</span> <span class="b">zonelist</span><span class="f">;</span>
<a name="11" /><span class="True">      11:</span> <span class="m">struct</span> <span class="b">notifier_block</span><span class="f">;</span>
<a name="12" /><span class="True">      12:</span> <span class="m">struct</span> <span class="b">mem_cgroup</span><span class="f">;</span>
<a name="13" /><span class="True">      13:</span> <span class="m">struct</span> <span class="b">task_struct</span><span class="f">;</span>
<a name="14" /><span class="True">      14:</span> 
<a name="15" /><span class="True">      15:</span> <span class="k">/*</span>
<a name="16" /><span class="True">      16:</span> <span class="k"> * Types of limitations to the nodes from which allocations may occur</span>
<a name="17" /><span class="True">      17:</span> <span class="k"> */</span>
<a name="18" /><span class="True">      18:</span> <span class="m">enum</span> <span class="b">oom_constraint</span> <span class="f">{</span>
<a name="19" /><span class="True">      19:</span>     <span class="b">CONSTRAINT_NONE</span><span class="f">,</span>
<a name="20" /><span class="True">      20:</span>     <span class="b">CONSTRAINT_CPUSET</span><span class="f">,</span>
<a name="21" /><span class="True">      21:</span>     <span class="b">CONSTRAINT_MEMORY_POLICY</span><span class="f">,</span>
<a name="22" /><span class="True">      22:</span>     <span class="b">CONSTRAINT_MEMCG</span><span class="f">,</span>
<a name="23" /><span class="True">      23:</span> <span class="f">}</span><span class="f">;</span>
<a name="24" /><span class="True">      24:</span> 
<a name="25" /><span class="True">      25:</span> <span class="m">enum</span> <span class="b">oom_scan_t</span> <span class="f">{</span>
<a name="26" /><span class="True">      26:</span>     <span class="b">OOM_SCAN_OK</span><span class="f">,</span>        <span class="k">/* scan thread and find its badness */</span>
<a name="27" /><span class="True">      27:</span>     <span class="b">OOM_SCAN_CONTINUE</span><span class="f">,</span>    <span class="k">/* do not consider thread for oom kill */</span>
<a name="28" /><span class="True">      28:</span>     <span class="b">OOM_SCAN_ABORT</span><span class="f">,</span>        <span class="k">/* abort the iteration and return */</span>
<a name="29" /><span class="True">      29:</span>     <span class="b">OOM_SCAN_SELECT</span><span class="f">,</span>    <span class="k">/* always select this thread first */</span>
<a name="30" /><span class="True">      30:</span> <span class="f">}</span><span class="f">;</span>
<a name="31" /><span class="True">      31:</span> 
<a name="32" /><span class="True">      32:</span> <span class="k">/* Thread is the potential origin of an oom condition; kill first on oom */</span>
<a name="33" /><span class="True">      33:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_T09NX0ZMQUdfT1JJR0lOXzA_"><span class="b">OOM_FLAG_ORIGIN</span></a>        <span class="f">(</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_X19mb3JjZV8w"><span class="b">__force</span></a> <span class="b">oom_flags_t</span><span class="f">)</span><span class="c">0x1</span><span class="f">)</span>
<a name="34" /><span class="True">      34:</span> 
<a name="35" /><span class="True">      35:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">set_current_oom_origin</span><span class="f">(</span><span class="m">void</span><span class="f">)</span>
<a name="36" /><span class="True">      36:</span> <span class="f">{</span>
<a name="37" /><span class="True">      37:</span>     <a href="cpu.c_macros_ref.html#_Y3VycmVudF8w"><span class="b">current</span></a><span class="f">-&gt;</span><span class="b">signal</span><span class="f">-&gt;</span><span class="b">oom_flags</span> <span class="f">|=</span> <a href="cpu.c_macros_ref.html#_T09NX0ZMQUdfT1JJR0lOXzA_"><span class="b">OOM_FLAG_ORIGIN</span></a><span class="f">;</span>
<a name="38" /><span class="True">      38:</span> <span class="f">}</span>
<a name="39" /><span class="True">      39:</span> 
<a name="40" /><span class="True">      40:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">clear_current_oom_origin</span><span class="f">(</span><span class="m">void</span><span class="f">)</span>
<a name="41" /><span class="True">      41:</span> <span class="f">{</span>
<a name="42" /><span class="True">      42:</span>     <a href="cpu.c_macros_ref.html#_Y3VycmVudF8w"><span class="b">current</span></a><span class="f">-&gt;</span><span class="b">signal</span><span class="f">-&gt;</span><span class="b">oom_flags</span> <span class="f">&amp;=</span> <span class="f">~</span><a href="cpu.c_macros_ref.html#_T09NX0ZMQUdfT1JJR0lOXzA_"><span class="b">OOM_FLAG_ORIGIN</span></a><span class="f">;</span>
<a name="43" /><span class="True">      43:</span> <span class="f">}</span>
<a name="44" /><span class="True">      44:</span> 
<a name="45" /><span class="True">      45:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">oom_task_origin</span><span class="f">(</span><span class="m">const</span> <span class="m">struct</span> <span class="b">task_struct</span> <span class="f">*</span><span class="b">p</span><span class="f">)</span>
<a name="46" /><span class="True">      46:</span> <span class="f">{</span>
<a name="47" /><span class="True">      47:</span>     <span class="m">return</span> <span class="f">!</span><span class="f">!</span><span class="f">(</span><span class="b">p</span><span class="f">-&gt;</span><span class="b">signal</span><span class="f">-&gt;</span><span class="b">oom_flags</span> <span class="f">&amp;</span> <a href="cpu.c_macros_ref.html#_T09NX0ZMQUdfT1JJR0lOXzA_"><span class="b">OOM_FLAG_ORIGIN</span></a><span class="f">)</span><span class="f">;</span>
<a name="48" /><span class="True">      48:</span> <span class="f">}</span>
<a name="49" /><span class="True">      49:</span> 
<a name="50" /><span class="True">      50:</span> <span class="m">extern</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">oom_badness</span><span class="f">(</span><span class="m">struct</span> <span class="b">task_struct</span> <span class="f">*</span><span class="b">p</span><span class="f">,</span>
<a name="51" /><span class="True">      51:</span>         <span class="m">struct</span> <span class="b">mem_cgroup</span> <span class="f">*</span><span class="b">memcg</span><span class="f">,</span> <span class="m">const</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">nodemask</span><span class="f">,</span>
<a name="52" /><span class="True">      52:</span>         <span class="m">unsigned</span> <span class="m">long</span> <span class="b">totalpages</span><span class="f">)</span><span class="f">;</span>
<a name="53" /><span class="True">      53:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">oom_kill_process</span><span class="f">(</span><span class="m">struct</span> <span class="b">task_struct</span> <span class="f">*</span><span class="b">p</span><span class="f">,</span> <span class="b">gfp_t</span> <span class="b">gfp_mask</span><span class="f">,</span> <span class="m">int</span> <span class="b">order</span><span class="f">,</span>
<a name="54" /><span class="True">      54:</span>                  <span class="m">unsigned</span> <span class="m">int</span> <span class="b">points</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">totalpages</span><span class="f">,</span>
<a name="55" /><span class="True">      55:</span>                  <span class="m">struct</span> <span class="b">mem_cgroup</span> <span class="f">*</span><span class="b">memcg</span><span class="f">,</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">nodemask</span><span class="f">,</span>
<a name="56" /><span class="True">      56:</span>                  <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">message</span><span class="f">)</span><span class="f">;</span>
<a name="57" /><span class="True">      57:</span> 
<a name="58" /><span class="True">      58:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">try_set_zonelist_oom</span><span class="f">(</span><span class="m">struct</span> <span class="b">zonelist</span> <span class="f">*</span><span class="b">zonelist</span><span class="f">,</span> <span class="b">gfp_t</span> <span class="b">gfp_flags</span><span class="f">)</span><span class="f">;</span>
<a name="59" /><span class="True">      59:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">clear_zonelist_oom</span><span class="f">(</span><span class="m">struct</span> <span class="b">zonelist</span> <span class="f">*</span><span class="b">zonelist</span><span class="f">,</span> <span class="b">gfp_t</span> <span class="b">gfp_flags</span><span class="f">)</span><span class="f">;</span>
<a name="60" /><span class="True">      60:</span> 
<a name="61" /><span class="True">      61:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">check_panic_on_oom</span><span class="f">(</span><span class="m">enum</span> <span class="b">oom_constraint</span> <span class="b">constraint</span><span class="f">,</span> <span class="b">gfp_t</span> <span class="b">gfp_mask</span><span class="f">,</span>
<a name="62" /><span class="True">      62:</span>                    <span class="m">int</span> <span class="b">order</span><span class="f">,</span> <span class="m">const</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">nodemask</span><span class="f">)</span><span class="f">;</span>
<a name="63" /><span class="True">      63:</span> 
<a name="64" /><span class="True">      64:</span> <span class="m">extern</span> <span class="m">enum</span> <span class="b">oom_scan_t</span> <span class="b">oom_scan_process_thread</span><span class="f">(</span><span class="m">struct</span> <span class="b">task_struct</span> <span class="f">*</span><span class="b">task</span><span class="f">,</span>
<a name="65" /><span class="True">      65:</span>         <span class="m">unsigned</span> <span class="m">long</span> <span class="b">totalpages</span><span class="f">,</span> <span class="m">const</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">nodemask</span><span class="f">,</span>
<a name="66" /><span class="True">      66:</span>         <span class="m">bool</span> <span class="b">force_kill</span><span class="f">)</span><span class="f">;</span>
<a name="67" /><span class="True">      67:</span> 
<a name="68" /><span class="True">      68:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">out_of_memory</span><span class="f">(</span><span class="m">struct</span> <span class="b">zonelist</span> <span class="f">*</span><span class="b">zonelist</span><span class="f">,</span> <span class="b">gfp_t</span> <span class="b">gfp_mask</span><span class="f">,</span>
<a name="69" /><span class="True">      69:</span>         <span class="m">int</span> <span class="b">order</span><span class="f">,</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">mask</span><span class="f">,</span> <span class="m">bool</span> <span class="b">force_kill</span><span class="f">)</span><span class="f">;</span>
<a name="70" /><span class="True">      70:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">register_oom_notifier</span><span class="f">(</span><span class="m">struct</span> <span class="b">notifier_block</span> <span class="f">*</span><span class="b">nb</span><span class="f">)</span><span class="f">;</span>
<a name="71" /><span class="True">      71:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">unregister_oom_notifier</span><span class="f">(</span><span class="m">struct</span> <span class="b">notifier_block</span> <span class="f">*</span><span class="b">nb</span><span class="f">)</span><span class="f">;</span>
<a name="72" /><span class="True">      72:</span> 
<a name="73" /><span class="True">      73:</span> <span class="m">extern</span> <span class="m">bool</span> <span class="b">oom_killer_disabled</span><span class="f">;</span>
<a name="74" /><span class="True">      74:</span> 
<a name="75" /><span class="True">      75:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">oom_killer_disable</span><span class="f">(</span><span class="m">void</span><span class="f">)</span>
<a name="76" /><span class="True">      76:</span> <span class="f">{</span>
<a name="77" /><span class="True">      77:</span>     <span class="b">oom_killer_disabled</span> <span class="f">=</span> <span class="m">true</span><span class="f">;</span>
<a name="78" /><span class="True">      78:</span> <span class="f">}</span>
<a name="79" /><span class="True">      79:</span> 
<a name="80" /><span class="True">      80:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">oom_killer_enable</span><span class="f">(</span><span class="m">void</span><span class="f">)</span>
<a name="81" /><span class="True">      81:</span> <span class="f">{</span>
<a name="82" /><span class="True">      82:</span>     <span class="b">oom_killer_disabled</span> <span class="f">=</span> <span class="m">false</span><span class="f">;</span>
<a name="83" /><span class="True">      83:</span> <span class="f">}</span>
<a name="84" /><span class="True">      84:</span> 
<a name="85" /><span class="True">      85:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">oom_gfp_allowed</span><span class="f">(</span><span class="b">gfp_t</span> <span class="b">gfp_mask</span><span class="f">)</span>
<a name="86" /><span class="True">      86:</span> <span class="f">{</span>
<a name="87" /><span class="True">      87:</span>     <span class="m">return</span> <span class="f">(</span><span class="b">gfp_mask</span> <span class="f">&amp;</span> <a href="cpu.c_macros_ref.html#_X19HRlBfRlNfMA__"><span class="b">__GFP_FS</span></a><span class="f">)</span> <span class="f">&amp;&amp;</span> <span class="f">!</span><span class="f">(</span><span class="b">gfp_mask</span> <span class="f">&amp;</span> <a href="cpu.c_macros_ref.html#_X19HRlBfTk9SRVRSWV8w"><span class="b">__GFP_NORETRY</span></a><span class="f">)</span><span class="f">;</span>
<a name="88" /><span class="True">      88:</span> <span class="f">}</span>
<a name="89" /><span class="True">      89:</span> 
<a name="90" /><span class="True">      90:</span> <span class="m">extern</span> <span class="m">struct</span> <span class="b">task_struct</span> <span class="f">*</span><span class="b">find_lock_task_mm</span><span class="f">(</span><span class="m">struct</span> <span class="b">task_struct</span> <span class="f">*</span><span class="b">p</span><span class="f">)</span><span class="f">;</span>
<a name="91" /><span class="True">      91:</span> 
<a name="92" /><span class="True">      92:</span> <span class="k">/* sysctls */</span>
<a name="93" /><span class="True">      93:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">sysctl_oom_dump_tasks</span><span class="f">;</span>
<a name="94" /><span class="True">      94:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">sysctl_oom_kill_allocating_task</span><span class="f">;</span>
<a name="95" /><span class="True">      95:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">sysctl_panic_on_oom</span><span class="f">;</span>
<a name="96" /><span class="True">      96:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* _INCLUDE_LINUX_OOM_H */</span>
<a name="97" /><span class="True">      97:</span> </pre>
  </body>
</html>
